#!/bin/sh
#ip="10.211.55.7"
ip=`/sbin/ifconfig -a eth0|grep inet|awk '{print $2}'|tr -d "addr:"|sed -n '1p'`

hostname=`hostname`
groupName="els" #组名
elPort="9200"
watchPath="/usr/share/logstash/logs/*.log" #组名

#elasticsearchVersion="xiaoxu/elasticsearch:v6.2.4"
#kibanaVersion="xiaoxu/kibana:v6.2.4"
#logstashVersion="xiaoxu/logstash:v6.2.4"

elasticsearchVersion="docker.elastic.co/elasticsearch/elasticsearch:7.1.0"
kibanaVersion="docker.elastic.co/kibana/kibana:7.1.0"
logstashVersion="docker.elastic.co/logstash/logstash:7.1.0"

####################################elasticsearch#########################################################
######################################################################################################
#############################################################################################
sudo mkdir -p /usr/elasticsearch/data
sudo mkdir -p /usr/elasticsearch/logs
sudo chmod -R 777 /usr/elasticsearch
sudo mkdir -p /usr/elasticsearch/config
sudo chmod 777 /usr/elasticsearch/data
sudo chmod 777 /usr/elasticsearch/logs
sudo chmod 777 /usr/elasticsearch/config

#删除配置
sudo rm -rf /usr/elasticsearch/config/elasticsearch.yml

sudo rm -rf /usr/logstash/config/logstash.conf


#生成配置表 els
if [ ! -f "/usr/elasticsearch/config/elasticsearch.yml" ];then
    echo "#vincentxiaoxu">> /usr/elasticsearch/config/elasticsearch.yml
    echo "cluster.name: els">> /usr/elasticsearch/config/elasticsearch.yml
    echo "node.name: ${hostname}">> /usr/elasticsearch/config/elasticsearch.yml
    echo "network.host: 0.0.0.0">> /usr/elasticsearch/config/elasticsearch.yml
    echo "http.port: 9200">> /usr/elasticsearch/config/elasticsearch.yml
    echo "bootstrap.memory_lock: false">> /usr/elasticsearch/config/elasticsearch.yml
    echo "bootstrap.system_call_filter: false">> /usr/elasticsearch/config/elasticsearch.yml
    echo "http.cors.enabled: true">> /usr/elasticsearch/config/elasticsearch.yml
    echo "http.cors.allow-origin: '*'">> /usr/elasticsearch/config/elasticsearch.yml
    echo 'discovery.zen.ping.unicast.hosts: ["'${ip}'"]'>> /usr/elasticsearch/config/elasticsearch.yml
fi

sudo chmod -R 777 /usr/elasticsearch/config

#启动els
#关闭 重启

docker stop els
docker rm els
docker run --name els -d -p 9200:9200 -p 9300:9300 -v /usr/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/elasticsearch/data:/usr/share/elasticsearch/data -e "discovery.type=single-node" ${elasticsearchVersion}

####################################    head   #########################################################
######################################################################################################
#############################################################################################
# start head
docker stop head
docker rm head
docker run -d --name head -p 9100:9100  wallbase/elasticsearch-head:6-alpine

####################################    kibana    #########################################################
######################################################################################################
#############################################################################################

sudo mkdir -p /usr/kibana/config
sudo chmod 777 /usr/kibana/config
sudo rm -rf /usr/kibana/config/kibana.yml

#生成配置表 kibana
if [ ! -f "/usr/kibana/config/kibana.yml" ];then
    echo "server.port: 5601">> /usr/kibana/config/kibana.yml
    echo "server.host: 0.0.0.0">> /usr/kibana/config/kibana.yml
    echo 'elasticsearch.hosts: ["http://'${ip}':9200"]'>> /usr/kibana/config/kibana.yml
fi

#启动 kibana
docker stop kibana
docker rm kibana
docker run --name kibana -d -v /usr/kibana/config:/usr/share/kibana/config -p 5601:5601 ${kibanaVersion}


####################################    logstash    #########################################################
######################################################################################################
#############################################################################################

#删除配置表
sudo rm -rf /usr/logstash/config/logstash.yml
sudo rm -rf /usr/logstash/config/pipelines.yml
sudo rm -rf /usr/logstash/config/logstash.conf
sudo chmod -R 777 /usr/logstash/config


if [ ! -f "/usr/logstash/config/logstash.conf" ];then
#创建配置
writeLogstashStr='
input {
  file {
    path => ["'${watchPath}'"]
    type => "'${hostname}'-logs"
    start_position => "beginning"
  }
}

filter {
    grok {
     match => {"message" => "\[%{DATA:time_local}\] \[%{LOGLEVEL:log_level}\] %{GREEDYDATA:pomele_message}"}
    }

    date {
      match => ["time_local", "yy/MM/dd-HH:mm:ss.SSS"]
    }
}

output {
  stdout{codec=>"rubydebug"}
  elasticsearch {
     hosts => ["'${ip}':'${elPort}'"]
     index => "'${hostname}'--%{+YYYY.MM.dd}"
     document_type   => "'${hostname}'"
  }
}'

echo "${writeLogstashStr}">> /usr/logstash/config/logstash.conf
fi

if [ ! -f "/usr/logstash/config/logstash.yml" ];then
    echo 'http.host: "0.0.0.0"' >> /usr/logstash/config/logstash.yml
    echo 'xpack.monitoring.elasticsearch.hosts: ["http://'${ip}':9200"]' >> /usr/logstash/config/logstash.yml
    echo 'xpack.monitoring.enabled: true' >> /usr/logstash/config/logstash.yml
fi

if [ ! -f "/usr/logstash/config/pipelines.yml" ];then
    echo '#- pipeline.id: main' >> /usr/logstash/config/pipelines.yml
    echo '#  path.config: "/usr/share/logstash/logstash.conf"' >>/usr/logstash/config/pipelines.yml
fi

sudo chmod 777 /usr/logstash/config/pipelines.yml
sudo chmod 777 /usr/logstash/config/logstash.conf
sudo chmod 777 /usr/logstash/config/logstash.yml

#运行logstash
docker stop logstash
docker rm logstash
docker run -d --name logstash \
-p 5044:5044 \
-p 9600:9600 \
-v /usr/logstash/config:/usr/share/logstash/config  \
-v /xsyx/server/logs:/usr/share/logstash/logs  \
docker.elastic.co/logstash/logstash:7.1.0 \
-f /usr/share/logstash/config/logstash.conf
